This invention relates to a method and apparatus for warm starting a system where the system includes region(s) of software code incapable of warm starting. More particularly, the invention is directed to a warm starting technique that includes determining in which of a plurality of regions of the software code that the code was being executed when an initiation of a warm start occurred. The determination is based, in a preferred embodiment, on the status of flags associated with the plurality of regions of the software code. Based on the results of the determination, the method of the present invention proceeds in a variety of defined manners to return the system to normal operation.
While the invention is particularly directed to the art of warm starting software in a particular environment to support redundancy in a communication system, and will be thus described with specific reference thereto, it will be appreciated that the invention may have usefulness in other fields and applications. For example, the invention may be used in any application where software advantageously uses warm starting techniques.
By way of background, computer systemsxe2x80x94such as those used in the field of telecommunicationsxe2x80x94typically include a control processor for controlling the operation of the system. If the control processor fails, all of the systems that it supports necessarily fail. A known approach for dealing with this difficulty is to provide a second, or redundant, control processor to the system. In these circumstances, if the main or active control processor fails, the redundant control processor assumes control in such a way so that the system is not impacted by the change of control processors to any great extent. Using so called xe2x80x9credundancyxe2x80x9d techniques, processes in the system that are running at the time of failure can be maintained.
One way to support redundancy is to use warm starting techniques to facilitate the changeover of processor control. Generally, during a warm start, only the operating system is started or restarted. The remaining portions of the software, which may require some recovery from failure errors, are nonetheless able to maintain information about the rest of the system. Hardware is generally not reinitialized during a warm start. This is all in contrast to a xe2x80x9ccoldxe2x80x9d start which typically requires a total rebooting of the system (hardware and software) and loss of all information in the system.
Warm starts can occur at any point during execution of code that is running in the system, including the situation where processor control is being changed from a main control processor to a redundant control processor in a redundant system. It is to be further appreciated that warm starts can also occur in the main processor when no control changeover occurs, whether or not a redundant processor is available. This being the case, warm starts sometimes occur when critical regions of a code are being executed, thus necessitating special treatment of the data and/or code for recovery purposes. In addition, in circumstances where regions of the code were not written to support warm starting, the entire system becomes incapable of being warm started.
The present invention contemplates a new and improved method and apparatus for warm starting a system utilizing software incapable of warm starting that resolves the above-referenced difficulties and others.
A method and apparatus for warm starting a system where the system includes regions of software code incapable of warm starting are provided.
In one aspect of the invention, the method comprises steps of initiating a warm start routine, terminating connections to external devices, initializing the warm start of the system by determining in which of the plurality of regions the code was being executed when the initiating occurred and, if the code of the first region was being executed when the initiating occurred, executing the warm start routine, or, if the code of the second region was being executed when the initiating occurred, reinitializing the code of the second region, auditing the system to determine whether other regions of the plurality of regions of the code were dependent on the code of the second region when the initiating occurred and reinitializing the other regions if the code of the second region is reinitialized, and reestablishing the external connections.
In a more limited aspect of the invention, the determining in which of the plurality of regions the code was being executed comprises determining the status of flags associated with the first region and the second region, the flags being set while the code is being executed in each region and subsequently reset.
In a still more limited aspect of the invention, the code includes a third region and the initializing includes cold starting the system if the code is executing in the third region when the initiating occurred.
In a still more limited aspect of the invention, the determining in which of the plurality of regions the code was being executed comprises determining the status of flags associated with the first region, the second region and the third region, the flags being set while the code is being executed in each region and subsequently reset.
In a still more limited aspect of the invention, the code includes another region and the initializing includes executing the warm start routine and subsequently restructuring data being manipulated if the code is executing in that region when the initiating occurred.
In a still more limited aspect of the invention, the determining in which of the plurality of regions the code was being executed comprises determining the status of flags associated with the regions, the flags being set while the code is being executed in each region and subsequently reset.
In another aspect of the invention, a method comprises steps of executing the code, selectively setting flags associated with first and second regions of the code when the code is being executed therein such that a flag remains in a set state while the code is being executed in the associated region, resetting each set flag after the code is fully executed in the associated region, initiating a warm start routine, determining which flag was set when the initiating occurred, executing the warm start routine if the flag associated with the first region is set, reinitializing the code of the second region if the flag associated with the second region is set, auditing the system to determine whether other regions of the plurality of regions of the code were dependent on the code of the second region when the initiating occurred, reinitializing the other regions if the code of the second region is reinitialized, and reestablishing the external connections.
In a more limited aspect of the invention, the code includes a third region and the method further comprises steps of selectively setting a flag associated with the third region when the code is being executed therein such that the flag remains in a set state while the code is being executed in the third region and cold starting the system if the flag associated with the third region was set when the initiating occurred.
In a still more limited aspect of the invention, the code includes another region and the method further comprises steps of selectively setting a flag associated with that region when the code is being executed therein such that the flag remains in a set state while the code is being executed in that region and executing the warm start routine and subsequently restructuring data being manipulated if the flag associated with that region was set when the initiating occurred.
In a still more limited aspect of the invention, the code includes a fourth region and the method further comprises steps of selectively setting a flag associated with the fourth region when the code is being executed therein such that the flag remains in a set state while the code is being executed in the fourth region and executing the warm start routine and subsequently restructuring data being manipulated if the flag associated with the fourth region was set when the initiating occurred.
In another aspect of the invention, an apparatus implementing the method of the invention is provided.
The primary advantage of the system according to the present invention is that it provides a technique for allowing a system to warm start to support redundancy even where regions of the software code are not warm startable.
Further scope of the applicability of the present invention will become apparent from the detailed description provided below. It should be understood, however, that the detailed description and specific examples, while indicating preferred embodiments of the invention, are given by way of illustration only, since various changes and modifications within the spirit and scope of the invention will become apparent to those skilled in the art.